﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using FrbaCommerce.Ver_Publicacion;


namespace FrbaCommerce.Gestion_de_Preguntas
{
    public partial class GestionDePreguntas : Form
    {
        private FormMainMenu parentMenu;

        public GestionDePreguntas(FormMainMenu parentMenu)
        {
            InitializeComponent();
            this.parentMenu = parentMenu;
        }

        private void cbxOpcionesGestionPreguntas_SelectionChangeCommitted(object sender, EventArgs e)
        {
            if (cbxOpcionesGestionPreguntas.SelectedItem.Equals("Preguntas a responder"))
            {
                mostrarPreguntasAResponder();
            }

            else
            {
                mostrarRespuestasAPreguntas();
            }
        }

        private DataTable listador( DataSet datos) { 
            DataTable tabla = new DataTable ();

            //btn_responder += new EventHandler();
            tabla = datos.Tables[0];
            return tabla;
        }
        
        private DataGridViewButtonColumn agregarColumnaAccion  (String action) {
            DataGridViewButtonColumn buttonColumn = new DataGridViewButtonColumn();
            buttonColumn.Text = action;
            buttonColumn.UseColumnTextForButtonValue = true;
            buttonColumn.DefaultCellStyle.ForeColor = Color.Blue;

            return buttonColumn;
        }

        private void dgvListado_ResponderClick(object sender, DataGridViewCellEventArgs e)
        {
            int codigo = (int) dgvListado.Rows[e.RowIndex].Cells[0].Value;
            AltaRespuesta res = new AltaRespuesta(codigo, this);
            res.ShowDialog();
        }

        private void dgvListado_VerPublicacionClick(object sender, DataGridViewCellEventArgs e)
        {
            //BIND ACTION VerPublicacion! select para obtener info de la publicacion
            decimal codigo = (decimal) dgvListado.Rows[e.RowIndex].Cells[0].Value;
            VerPublicacion publi = new VerPublicacion(codigo);
            publi.ShowDialog();
        }

        public void mostrarPreguntasAResponder () 
        {
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            String query = "";

            //Obtener preguntas para un id de usuario (vendedor) a publicaciones activas sin responder
            query += "SELECT DISTINCT pregs.id as 'Codigo de pregunta', pregs.cod_publi as 'Código de Publicación', pregs.descripcion as 'Pregunta',";
            query += " pregs.fecha_creacion as 'Fecha de Realización' FROM ASDF.Publicacion publi, ASDF.Preguntas_Publicacion pregs,";
            query += " ASDF.Usuario u WHERE not exists (select pregunta from ASDF.Respuesta r WHERE r.pregunta = pregs.id)";
            query += " AND publi.preguntas_habilitadas=1 AND publi.usuario = " + this.parentMenu.getUsuarioLogueado().Id;
            query += " AND (publi.estado = 2 or publi.estado = 3) AND pregs.cod_publi = publi.cod ORDER BY (pregs.id)";


            try
            {
                datos = conexion.ejecutarConsulta(query);
                if (!isEmpty(datos))
                {
                    dgvListado.Columns.Clear();
                    dgvListado.CellContentClick -= dgvListado_ResponderClick;
                    dgvListado.DataSource = listador(datos);
                    dgvListado.Columns.Add(agregarColumnaAccion("Responder"));
                    dgvListado.CellContentClick += new DataGridViewCellEventHandler(dgvListado_ResponderClick);
                    dgvListado.AutoResizeColumns();
                }
                else
                {
                    MessageBox.Show("No hay preguntas a responder");
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show("Problema de conexión con la BD: " + ex.Message);
            }
        }

        private void mostrarRespuestasAPreguntas() 
        {
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            String query;

            /*Publicacion, pregunta, respuesta*/
            query = "SELECT p.cod_publi as 'Código de Publicación'";
            query += " , p.descripcion as 'Pregunta', r.descripcion as 'Respuesta' ";
            query += "FROM ASDF.Preguntas_Publicacion p, ASDF.Respuesta r ";
            query += "WHERE r.pregunta = p.id and p.usuario =" + this.parentMenu.getUsuarioLogueado().Id ;

            try
            {
                datos = conexion.ejecutarConsulta(query);
                if (!isEmpty(datos)) 
                {
                    dgvListado.Columns.Clear();
                    dgvListado.CellContentClick -= dgvListado_VerPublicacionClick;
                    dgvListado.DataSource = listador(datos);
                    dgvListado.Columns.Add(agregarColumnaAccion("Ver Publicación"));
                    dgvListado.CellContentClick += new DataGridViewCellEventHandler(dgvListado_VerPublicacionClick);
                    dgvListado.AutoResizeColumns();
                }
                else
                {
                    MessageBox.Show("No hay Respuestas");
                }
                
 
            }
            catch (Exception ex)
            {
                MessageBox.Show("Problema de conexión con la BD: " + ex.Message);
            }
        }

        private Boolean isEmpty (DataSet data) 
        {
            return (data.Tables[0].Rows.Count == 0);
        }

    }
}
